#pragma once
#include "DXAMLCommon.h"

#include "IObject.h"



struct Xcp_IAutomationPeer :
	public IObject
{
public: 
	virtual struct Xcp_IDependencyObject * GetIDependencyObject() = 0;
	virtual struct IUIAWrapper * GetUIAWrapper() = 0;
	virtual void SetUIAWrapper(struct IUIAWrapper *) = 0;
	virtual void InvalidateUIAWrapper() = 0;
	virtual void InvalidateOwner() = 0;
	virtual struct Xcp_IAutomationPeer * GetFirstAPChild() = 0;
	virtual struct Xcp_IAutomationPeer * GetLastAPChild() = 0;
	virtual struct Xcp_IAutomationPeer * GetNextAPSibling() = 0;
	virtual struct Xcp_IAutomationPeer * GetPrevAPSibling() = 0;
	virtual struct Xcp_IAutomationPeer * GetAPParent() = 0;
	virtual struct Xcp_IAutomationPeer * GetAPTemplatedParentFirst() = 0;
	virtual struct Xcp_IAutomationPeer * GetAPEventsSource() = 0;
	virtual void SetAPEventsSource(struct Xcp_IAutomationPeer *) = 0;
	virtual XINT32 GetChildren(struct Xcp_IAutomationPeer * * *) = 0;
	virtual struct IUIAProvider * GetPattern(enum UIAXcp::APPatternInterface) = 0;
	virtual struct IUIATextRangeProvider * GetTextRangePattern(struct Xcp_IDependencyObject *) = 0;
	virtual HRESULT GetAcceleratorKey(CXString * *) = 0;
	virtual HRESULT GetAccessKey(CXString * *) = 0;
	virtual HRESULT GetAutomationControlType(enum UIAXcp::APAutomationControlType *) = 0;
	virtual HRESULT GetAutomationId(CXString * *) = 0;
	virtual HRESULT GetBoundingRectangle(struct XRECTF_WH * *) = 0;
	virtual HRESULT GetClassNameW(CXString * *) = 0;
	virtual HRESULT GetClickablePoint(struct XPOINTF * *) = 0;
	virtual HRESULT GetHelpText(CXString * *) = 0;
	virtual HRESULT GetItemStatus(CXString * *) = 0;
	virtual HRESULT GetItemType(CXString * *) = 0;
	virtual HRESULT GetLabeledBy(struct Xcp_IAutomationPeer * *) = 0;
	virtual HRESULT GetLocalizedControlType(CXString * *) = 0;
	virtual HRESULT GetName(CXString * *) = 0;
	virtual HRESULT GetOrientation(enum UIAXcp::OrientationType *) = 0;
	virtual HRESULT GetLiveSetting(enum UIAXcp::LiveSetting *) = 0;
	virtual HRESULT HasKeyboardFocus(XINT32 *) = 0;
	virtual HRESULT IsContentElement(XINT32 *) = 0;
	virtual HRESULT IsControlElement(XINT32 *) = 0;
	virtual HRESULT IsEnabled(XINT32 *) = 0;
	virtual HRESULT IsKeyboardFocusable(XINT32 *) = 0;
	virtual HRESULT IsOffscreen(XINT32 *) = 0;
	virtual HRESULT IsPassword(XINT32 *) = 0;
	virtual HRESULT IsRequiredForForm(XINT32 *) = 0;
	virtual struct Xcp_IAutomationPeer * GetPeerFromPoint(struct XPOINTF *) = 0;
	virtual XUINT32 GetRuntimeId() = 0;
	virtual void InvalidatePeer() = 0;
	virtual XINT32 ListenerExists(enum UIAXcp::APAutomationEvents) = 0;
	virtual void RaiseAutomationEvent(enum UIAXcp::APAutomationEvents) = 0;
	virtual void RaisePropertyChangedEvent(enum UIAXcp::APAutomationProperties, CValue *, CValue *) = 0;
	virtual void SetFocus() = 0;
	virtual void RaiseAutomaticPropertyChanges() = 0;
	virtual void RaiseAutomaticStructureChanges() = 0;
	virtual void UIElementChildAdded(struct Xcp_IDependencyObject *) = 0;
	virtual void UIElementChildRemoved(struct Xcp_IDependencyObject *) = 0;
	virtual void * GetInteropHwnd() = 0;
	virtual XBOOL IsInteropPeer() = 0;
	virtual XBOOL SupportsWindowlessSiteHost() = 0;
	virtual void * GetWindowlessRawElementProviderSimple() = 0;
	virtual XBOOL IsPrevSiblingWindowless() = 0;
	virtual void * GetWindowlessSibling() = 0;
	virtual void * GetUnwrappedPattern(XINT32) = 0;
	virtual XBOOL HasParent() = 0;
};


